package utils;

import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class StringUtils {

	private Map<Pattern, String> patterns;

	public StringUtils() {
		this.patterns = new HashMap<Pattern, String>();
	}

	public void addPattern(String pattern, String name) {
		Pattern p = Pattern.compile(pattern);
		patterns.put(p, name);
	}

	public String getWebsite(String filename) {
		Matcher matcher;
		for(Map.Entry<Pattern, String> e : getPatterns().entrySet()) {
			matcher = e.getKey().matcher(filename);
			if(matcher.find()) return e.getValue();
		}
		return "";
	}

	public String getOriginalName(String filename) {
		Matcher matcher;
		String original = "";
		Pattern begin = Pattern.compile("^(\\d{6,9})");
		Pattern end = Pattern.compile("(\\.jpg|\\.png)$");

		matcher = begin.matcher(filename);
		if(matcher.find())
			original += matcher.group();

		matcher = end.matcher(filename);
		if(matcher.find())
			original += matcher.group();

		return original;
	}
	
	public String getID(String filename) {
		Matcher matcher;
		String original = "";
		Pattern begin = Pattern.compile("^(\\d{6,10})");
		
		matcher = begin.matcher(filename);
		if(matcher.find())
			original += matcher.group();

		return original;
	}

	public Map<Pattern, String> getPatterns() { return patterns; }
	public void setPatterns(Map<Pattern, String> patterns) { this.patterns = patterns; }

	public static void main(String[] args) {
		// give back original name
		StringUtils utils = new StringUtils();
		// commence par entre 6 et 9 digits et termine par .jpg ou .png
		utils.addPattern("^(\\d{6,9})(\\.jpg|\\.png)$", "pixiv");
		// commence par entre 6 et 9 digits, un _, des caractères et termine par .jpg ou .png
		utils.addPattern("^(\\d{6,9})_(.*)(\\.jpg|\\.png)$", "pixiv");
		// commence par entre 6 et 9 digits, un " ", des caractères et termine par .jpg ou .png
		utils.addPattern("^(\\d{6,9})\\s(.*)(\\.jpg|\\.png)$", "pixiv");

		// commence par 10 digits, un ., des caractères, un _, et termine par .jpg ou .png
		utils.addPattern("^(\\d{10})\\.(.*)_(.*)(\\.jpg|\\.png)$", "fa");

		System.out.println(utils.getWebsite("8684180 ひだまる.jpg"));
		System.out.println(utils.getOriginalName("8684180 ひだまる.jpg"));
	}

}
